package com.wanger.swa.service.ise;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wanger.swa.dto.templateDynamicField.query.TemplateDynamicFieldQuery;
import com.wanger.swa.dto.templateDynamicField.req.TemplateDynamicFieldAddReq;
import com.wanger.swa.dto.templateDynamicField.req.TemplateDynamicFieldUpdateReq;
import com.wanger.swa.dto.templateDynamicField.resp.TemplateDynamicFieldResp;
import com.wanger.swa.domain.po.TemplateDynamicFieldPO;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @Author: wanger
 * @Date: 2024/9/15 17:25
 * @Description: 模板动态字段
 */
public interface TemplateDynamicFieldService extends IService<TemplateDynamicFieldPO> {

    List<TemplateDynamicFieldResp> getListByTemplateId(String templateId);

    Map<String, List<TemplateDynamicFieldResp>> getListByTemplateIds(Set<String> templateIds);

    void addTemplateDynamicFieldList(List<TemplateDynamicFieldAddReq> dtoList);

    TemplateDynamicFieldResp addTemplateDynamicField(TemplateDynamicFieldAddReq addDTO);

    TemplateDynamicFieldResp updateTemplateDynamicField(TemplateDynamicFieldUpdateReq updateDTO);

    TemplateDynamicFieldResp getOneTemplateDynamicField(String id);

    IPage<TemplateDynamicFieldResp> pageTemplateDynamicField(TemplateDynamicFieldQuery query);

    List<TemplateDynamicFieldResp> listTemplateDynamicField(TemplateDynamicFieldQuery query);

    void deleteTemplateDynamicField(String id);

    void removeByTemplateId(String templateId);

    void removeByTemplateIds(Set<String> templateIds);

    /**
     * 获取模板id对应的最大排序值
     *
     * @return Map<模板id, 最大排序值>
     */
    Map<String, Integer> getTemplateIdMaxSortValueMap();

    /**
     * 从map中获取值，将值加一后更新到map并返回
     *
     * @param map        Map<模板id, 最大排序值>
     * @param templateId 模板id
     * @return 最大排序值+1
     */
    Integer getMaxSortValueByTemplateId(Map<String, Integer> map, String templateId);
}
